﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;

/// <summary>
/// Summary description for LogInLogOut
/// </summary>
public static class LogInLogOut
{
    private static AppSettingsReader settings = new AppSettingsReader();

    private static Persona _persona = new Persona();

    public static Persona Persona
    {
        get { return LogInLogOut._persona; }
        set { LogInLogOut._persona = value; }
    }

    private static Usuario _usuario = new Usuario();

    public static Usuario Usuario
    {
        get { return LogInLogOut._usuario; }
        set { LogInLogOut._usuario = value; }
    }

    public static Persona Login(Usuario user)
    {
        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
        string strSQL = "";
        try
        {
            Persona resultado = new Persona();
            bd.bdConecta();
            strSQL = "select u.idpersona,u.idusuario, u.username, u.password, u.activo from usuario u ";
            strSQL += "inner join persona p ";
            strSQL += "on u.idpersona = p.idpersona where u.activo = 1 ";
            strSQL += "and username = '{0}' ";

            strSQL = String.Format(strSQL, user.username);

            DataSet ds = bd.dataSetConsulta(strSQL, "usuarios");

            if (ds.Tables["usuarios"].Rows.Count > 0)
            {
                Personas prsnas = new Personas();
                if (ds.Tables["usuarios"].Rows[0]["password"].ToString().Trim() == user.password.Trim())
                {
                    resultado = prsnas.GetPersona(ds.Tables["usuarios"].Rows[0]["idpersona"].ToString());
                    _persona = resultado;
                    _usuario = user;
                    _usuario.activo = true;
                    _usuario.idpersona = ds.Tables["usuarios"].Rows[0]["idpersona"].ToString();
                    _usuario.idusuario = ds.Tables["usuarios"].Rows[0]["idusuario"].ToString();
                }
                else
                {
                    resultado.idpersona = "P/I";
                }
            }
            else
            {
                resultado.idpersona = "N/A";
            }

            return resultado;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }

    }

    public static Usuario ObtenUsuario(string idpersona)
    {
        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
        string strSQL = "";
        try
        {            
            Usuario resultado = new Usuario();
            bd.bdConecta();
            strSQL = "select * ";
            strSQL += "from usuario where idpersona = '{0}'";


            strSQL = String.Format(strSQL, idpersona);

            DataSet ds = bd.dataSetConsulta(strSQL, "usuarios");

            if (ds.Tables["usuarios"].Rows.Count > 0)
            {
                resultado.idusuario = ds.Tables["usuarios"].Rows[0]["idusuario"].ToString();
                resultado.idpersona = ds.Tables["usuarios"].Rows[0]["idpersona"].ToString();
                resultado.username = ds.Tables["usuarios"].Rows[0]["username"].ToString();
                resultado.password = ds.Tables["usuarios"].Rows[0]["password"].ToString();
            }

            return resultado;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
    }

    public static bool ExisteUsuario(string username)
    {
        bool resultado = false;

        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
        string strSQL = "";
        try
        {         
            bd.bdConecta();
            strSQL = "select username, password ";
            strSQL += "from usuario where username = '{0}'";


            strSQL = String.Format(strSQL, username);

            DataSet ds = bd.dataSetConsulta(strSQL, "usuarios");

            if (ds.Tables["usuarios"].Rows.Count > 0)
            {
                resultado = true;
            }         
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
        return resultado;
    }

}